home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 342_01 / scnvfn01.c < prev    next >
Text File  |  1991-02-24  |  2KB  |  51 lines

  1. /*-
  2.  *  ----------------------------------------------------------------------
  3.  *  File        :   SCNVFN01.C
  4.  *  Creator     :   Blake Miller
  5.  *  Version     :   01.00.00            February 1991
  6.  *  Language    :   Microsoft Quick C   Version 2.0
  7.  *  Purpose     :   String Conversion Function
  8.  *              :   Convert Unsigned Long, Unsigned Int, or Unsigned Char
  9.  *              :   to a 'Binary' string.
  10.  *  ----------------------------------------------------------------------
  11.  */
  12.  
  13. void scv_uvtobs ( void *data, char *s,
  14.                   int msbit, int lsbit,
  15.                   int schar, int cchar );
  16.  
  17. /*- Binary String Converter ------------------**
  18.  *  Convert from a number into a 'binary' string.
  19.  *  That is, convert a byte, int, or long into a string
  20.  *  with a specified character for the '1' level and
  21.  *  another character for the logical '0' level.
  22.  */
  23. void scv_uvtobs (void *data, char *s, int msbit, int lsbit,
  24.                  int schar, int cchar )
  25.     {
  26.     unsigned long   mask;   /* bit select mask  */
  27.     unsigned long   sbit;   /* start bit        */
  28.     unsigned long   ebit;   /* end bit          */
  29.     unsigned long   ltmp;   /* temporary long   */
  30.  
  31.     ltmp = * (unsigned long *) data;    /* get data into long   */
  32.     *s = 0;                             /* clear string         */
  33.     sbit = 0x01;                        /* set start bit        */
  34.     sbit = sbit << msbit;               /* initialize position  */
  35.     ebit = 0x01;                        /* set end bit          */
  36.     ebit = ebit << lsbit;               /* initialize position  */
  37.  
  38.     for ( mask = sbit; mask >= ebit; mask = (mask >> 1) ){
  39.         if ( ltmp & mask )  *s = (char) schar;  /* set   character  */
  40.         else                *s = (char) cchar;  /* clear character  */
  41.         s++;                                    /* next string byte */
  42.         }
  43.     *s = 0;                                     /* EOS for string   */
  44.     }
  45.  
  46. /*-
  47.  *  ----------------------------------------------------------------------
  48.  *  END SCNVFN01.C Source File
  49.  *  ----------------------------------------------------------------------
  50.  */
  51.